home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / java / security / Security.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  11.4 KB  |  482 lines

  1. package java.security;
  2.  
  3. import java.io.BufferedInputStream;
  4. import java.io.File;
  5. import java.io.FileInputStream;
  6. import java.io.IOException;
  7. import java.io.InputStream;
  8. import java.net.URL;
  9. import java.util.Collections;
  10. import java.util.Enumeration;
  11. import java.util.HashSet;
  12. import java.util.Hashtable;
  13. import java.util.Iterator;
  14. import java.util.LinkedHashSet;
  15. import java.util.List;
  16. import java.util.Map;
  17. import java.util.Properties;
  18. import java.util.Set;
  19. import java.util.concurrent.ConcurrentHashMap;
  20. import sun.security.jca.GetInstance;
  21. import sun.security.jca.ProviderList;
  22. import sun.security.jca.Providers;
  23. import sun.security.util.Debug;
  24. import sun.security.util.PropertyExpander;
  25.  
  26. public final class Security {
  27.    private static final Debug sdebug = Debug.getInstance("properties");
  28.    private static Properties props;
  29.    private static final Map<String, Class> spiMap;
  30.  
  31.    private static void initialize() {
  32.       props = new Properties();
  33.       boolean var0 = false;
  34.       boolean var1 = false;
  35.       File var2 = securityPropFile("java.security");
  36.       if (var2.exists()) {
  37.          try {
  38.             FileInputStream var3 = new FileInputStream(var2);
  39.             BufferedInputStream var4 = new BufferedInputStream(var3);
  40.             props.load(var4);
  41.             ((InputStream)var4).close();
  42.             var0 = true;
  43.             if (sdebug != null) {
  44.                sdebug.println("reading security properties file: " + var2);
  45.             }
  46.          } catch (IOException var7) {
  47.             if (sdebug != null) {
  48.                sdebug.println("unable to load security properties from " + var2);
  49.                var7.printStackTrace();
  50.             }
  51.          }
  52.       }
  53.  
  54.       if ("true".equalsIgnoreCase(props.getProperty("security.overridePropertiesFile"))) {
  55.          String var9 = System.getProperty("java.security.properties");
  56.          if (var9 != null && var9.startsWith("=")) {
  57.             var1 = true;
  58.             var9 = var9.substring(1);
  59.          }
  60.  
  61.          if (var1) {
  62.             props = new Properties();
  63.             if (sdebug != null) {
  64.                sdebug.println("overriding other security properties files!");
  65.             }
  66.          }
  67.  
  68.          if (var9 != null) {
  69.             try {
  70.                var9 = PropertyExpander.expand(var9);
  71.                var2 = new File(var9);
  72.                URL var11;
  73.                if (var2.exists()) {
  74.                   var11 = new URL("file:" + var2.getCanonicalPath());
  75.                } else {
  76.                   var11 = new URL(var9);
  77.                }
  78.  
  79.                BufferedInputStream var5 = new BufferedInputStream(var11.openStream());
  80.                props.load(var5);
  81.                var5.close();
  82.                var0 = true;
  83.                if (sdebug != null) {
  84.                   sdebug.println("reading security properties file: " + var11);
  85.                   if (var1) {
  86.                      sdebug.println("overriding other security properties files!");
  87.                   }
  88.                }
  89.             } catch (Exception var6) {
  90.                if (sdebug != null) {
  91.                   sdebug.println("unable to load security properties from " + var9);
  92.                   var6.printStackTrace();
  93.                }
  94.             }
  95.          }
  96.       }
  97.  
  98.       if (!var0) {
  99.          initializeStatic();
  100.          if (sdebug != null) {
  101.             sdebug.println("unable to load security properties -- using defaults");
  102.          }
  103.       }
  104.  
  105.    }
  106.  
  107.    private static void initializeStatic() {
  108.       props.put("security.provider.1", "sun.security.provider.Sun");
  109.       props.put("security.provider.2", "sun.security.rsa.SunRsaSign");
  110.       props.put("security.provider.3", "com.sun.net.ssl.internal.ssl.Provider");
  111.       props.put("security.provider.4", "com.sun.crypto.provider.SunJCE");
  112.       props.put("security.provider.5", "sun.security.jgss.SunProvider");
  113.       props.put("security.provider.6", "com.sun.security.sasl.Provider");
  114.    }
  115.  
  116.    private Security() {
  117.    }
  118.  
  119.    private static File securityPropFile(String var0) {
  120.       String var1 = File.separator;
  121.       return new File(System.getProperty("java.home") + var1 + "lib" + var1 + "security" + var1 + var0);
  122.    }
  123.  
  124.    private static ProviderProperty getProviderProperty(String var0) {
  125.       Object var1 = null;
  126.       List var2 = Providers.getProviderList().providers();
  127.  
  128.       for(int var3 = 0; var3 < var2.size(); ++var3) {
  129.          Object var4 = null;
  130.          Provider var5 = (Provider)var2.get(var3);
  131.          String var6 = var5.getProperty(var0);
  132.          if (var6 == null) {
  133.             Enumeration var7 = var5.keys();
  134.  
  135.             while(var7.hasMoreElements() && var6 == null) {
  136.                String var8 = (String)var7.nextElement();
  137.                if (var0.equalsIgnoreCase(var8)) {
  138.                   var6 = var5.getProperty(var8);
  139.                   break;
  140.                }
  141.             }
  142.          }
  143.  
  144.          if (var6 != null) {
  145.             ProviderProperty var9 = new ProviderProperty((1)null);
  146.             var9.className = var6;
  147.             var9.provider = var5;
  148.             return var9;
  149.          }
  150.       }
  151.  
  152.       return (ProviderProperty)var1;
  153.    }
  154.  
  155.    private static String getProviderProperty(String var0, Provider var1) {
  156.       String var2 = var1.getProperty(var0);
  157.       if (var2 == null) {
  158.          Enumeration var3 = var1.keys();
  159.  
  160.          while(var3.hasMoreElements() && var2 == null) {
  161.             String var4 = (String)var3.nextElement();
  162.             if (var0.equalsIgnoreCase(var4)) {
  163.                var2 = var1.getProperty(var4);
  164.                break;
  165.             }
  166.          }
  167.       }
  168.  
  169.       return var2;
  170.    }
  171.  
  172.    /** @deprecated */
  173.    @Deprecated
  174.    public static String getAlgorithmProperty(String var0, String var1) {
  175.       ProviderProperty var2 = getProviderProperty("Alg." + var1 + "." + var0);
  176.       return var2 != null ? var2.className : null;
  177.    }
  178.  
  179.    public static synchronized int insertProviderAt(Provider var0, int var1) {
  180.       String var2 = var0.getName();
  181.       check("insertProvider." + var2);
  182.       ProviderList var3 = Providers.getFullProviderList();
  183.       ProviderList var4 = ProviderList.insertAt(var3, var0, var1 - 1);
  184.       if (var3 == var4) {
  185.          return -1;
  186.       } else {
  187.          Providers.setProviderList(var4);
  188.          return var4.getIndex(var2) + 1;
  189.       }
  190.    }
  191.  
  192.    public static int addProvider(Provider var0) {
  193.       return insertProviderAt(var0, 0);
  194.    }
  195.  
  196.    public static synchronized void removeProvider(String var0) {
  197.       check("removeProvider." + var0);
  198.       ProviderList var1 = Providers.getFullProviderList();
  199.       ProviderList var2 = ProviderList.remove(var1, var0);
  200.       Providers.setProviderList(var2);
  201.    }
  202.  
  203.    public static Provider[] getProviders() {
  204.       return Providers.getFullProviderList().toArray();
  205.    }
  206.  
  207.    public static Provider getProvider(String var0) {
  208.       return Providers.getProviderList().getProvider(var0);
  209.    }
  210.  
  211.    public static Provider[] getProviders(String var0) {
  212.       Object var1 = null;
  213.       Object var2 = null;
  214.       int var3 = var0.indexOf(58);
  215.       String var5;
  216.       String var6;
  217.       if (var3 == -1) {
  218.          var5 = var0;
  219.          var6 = "";
  220.       } else {
  221.          var5 = var0.substring(0, var3);
  222.          var6 = var0.substring(var3 + 1);
  223.       }
  224.  
  225.       Hashtable var4 = new Hashtable(1);
  226.       var4.put(var5, var6);
  227.       return getProviders((Map)var4);
  228.    }
  229.  
  230.    public static Provider[] getProviders(Map<String, String> var0) {
  231.       Provider[] var1 = getProviders();
  232.       Set var2 = var0.keySet();
  233.       LinkedHashSet var3 = new LinkedHashSet(5);
  234.       if (var2 != null && var1 != null) {
  235.          boolean var4 = true;
  236.  
  237.          for(String var6 : var2) {
  238.             String var7 = (String)var0.get(var6);
  239.             LinkedHashSet var8 = getAllQualifyingCandidates(var6, var7, var1);
  240.             if (var4) {
  241.                var3 = var8;
  242.                var4 = false;
  243.             }
  244.  
  245.             if (var8 == null || var8.isEmpty()) {
  246.                var3 = null;
  247.                break;
  248.             }
  249.  
  250.             Iterator var9 = var3.iterator();
  251.  
  252.             while(var9.hasNext()) {
  253.                Provider var10 = (Provider)var9.next();
  254.                if (!var8.contains(var10)) {
  255.                   var9.remove();
  256.                }
  257.             }
  258.          }
  259.  
  260.          if (var3 != null && !var3.isEmpty()) {
  261.             Object[] var11 = var3.toArray();
  262.             Provider[] var12 = new Provider[var11.length];
  263.  
  264.             for(int var13 = 0; var13 < var12.length; ++var13) {
  265.                var12[var13] = (Provider)var11[var13];
  266.             }
  267.  
  268.             return var12;
  269.          } else {
  270.             return null;
  271.          }
  272.       } else {
  273.          return var1;
  274.       }
  275.    }
  276.  
  277.    private static Class getSpiClass(String var0) {
  278.       Class var1 = (Class)spiMap.get(var0);
  279.       if (var1 != null) {
  280.          return var1;
  281.       } else {
  282.          try {
  283.             var1 = Class.forName("java.security." + var0 + "Spi");
  284.             spiMap.put(var0, var1);
  285.             return var1;
  286.          } catch (ClassNotFoundException var3) {
  287.             throw (Error)(new AssertionError("Spi class not found")).initCause(var3);
  288.          }
  289.       }
  290.    }
  291.  
  292.    static Object[] getImpl(String var0, String var1, String var2) throws NoSuchAlgorithmException, NoSuchProviderException {
  293.       return var2 == null ? GetInstance.getInstance(var1, getSpiClass(var1), var0).toArray() : GetInstance.getInstance(var1, getSpiClass(var1), var0, var2).toArray();
  294.    }
  295.  
  296.    static Object[] getImpl(String var0, String var1, String var2, Object var3) throws NoSuchAlgorithmException, NoSuchProviderException, InvalidAlgorithmParameterException {
  297.       return var2 == null ? GetInstance.getInstance(var1, getSpiClass(var1), var0, var3).toArray() : GetInstance.getInstance(var1, getSpiClass(var1), var0, var3, var2).toArray();
  298.    }
  299.  
  300.    static Object[] getImpl(String var0, String var1, Provider var2) throws NoSuchAlgorithmException {
  301.       return GetInstance.getInstance(var1, getSpiClass(var1), var0, var2).toArray();
  302.    }
  303.  
  304.    static Object[] getImpl(String var0, String var1, Provider var2, Object var3) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException {
  305.       return GetInstance.getInstance(var1, getSpiClass(var1), var0, var3, var2).toArray();
  306.    }
  307.  
  308.    public static String getProperty(String var0) {
  309.       SecurityManager var1 = System.getSecurityManager();
  310.       if (var1 != null) {
  311.          var1.checkPermission(new SecurityPermission("getProperty." + var0));
  312.       }
  313.  
  314.       String var2 = props.getProperty(var0);
  315.       if (var2 != null) {
  316.          var2 = var2.trim();
  317.       }
  318.  
  319.       return var2;
  320.    }
  321.  
  322.    public static void setProperty(String var0, String var1) {
  323.       check("setProperty." + var0);
  324.       props.put(var0, var1);
  325.       invalidateSMCache(var0);
  326.    }
  327.  
  328.    private static void invalidateSMCache(String var0) {
  329.       boolean var1 = var0.equals("package.access");
  330.       boolean var2 = var0.equals("package.definition");
  331.       if (var1 || var2) {
  332.          AccessController.doPrivileged(new 2(var1));
  333.       }
  334.  
  335.    }
  336.  
  337.    private static void check(String var0) {
  338.       SecurityManager var1 = System.getSecurityManager();
  339.       if (var1 != null) {
  340.          var1.checkSecurityAccess(var0);
  341.       }
  342.  
  343.    }
  344.  
  345.    private static LinkedHashSet getAllQualifyingCandidates(String var0, String var1, Provider[] var2) {
  346.       String[] var3 = getFilterComponents(var0, var1);
  347.       String var4 = var3[0];
  348.       String var5 = var3[1];
  349.       String var6 = var3[2];
  350.       return getProvidersNotUsingCache(var4, var5, var6, var1, var2);
  351.    }
  352.  
  353.    private static LinkedHashSet getProvidersNotUsingCache(String var0, String var1, String var2, String var3, Provider[] var4) {
  354.       LinkedHashSet var5 = new LinkedHashSet(5);
  355.  
  356.       for(int var6 = 0; var6 < var4.length; ++var6) {
  357.          if (isCriterionSatisfied(var4[var6], var0, var1, var2, var3)) {
  358.             var5.add(var4[var6]);
  359.          }
  360.       }
  361.  
  362.       return var5;
  363.    }
  364.  
  365.    private static boolean isCriterionSatisfied(Provider var0, String var1, String var2, String var3, String var4) {
  366.       String var5 = var1 + '.' + var2;
  367.       if (var3 != null) {
  368.          var5 = var5 + ' ' + var3;
  369.       }
  370.  
  371.       String var6 = getProviderProperty(var5, var0);
  372.       if (var6 == null) {
  373.          String var7 = getProviderProperty("Alg.Alias." + var1 + "." + var2, var0);
  374.          if (var7 != null) {
  375.             var5 = var1 + "." + var7;
  376.             if (var3 != null) {
  377.                var5 = var5 + ' ' + var3;
  378.             }
  379.  
  380.             var6 = getProviderProperty(var5, var0);
  381.          }
  382.  
  383.          if (var6 == null) {
  384.             return false;
  385.          }
  386.       }
  387.  
  388.       if (var3 == null) {
  389.          return true;
  390.       } else {
  391.          return isStandardAttr(var3) ? isConstraintSatisfied(var3, var4, var6) : var4.equalsIgnoreCase(var6);
  392.       }
  393.    }
  394.  
  395.    private static boolean isStandardAttr(String var0) {
  396.       if (var0.equalsIgnoreCase("KeySize")) {
  397.          return true;
  398.       } else {
  399.          return var0.equalsIgnoreCase("ImplementedIn");
  400.       }
  401.    }
  402.  
  403.    private static boolean isConstraintSatisfied(String var0, String var1, String var2) {
  404.       if (var0.equalsIgnoreCase("KeySize")) {
  405.          int var3 = Integer.parseInt(var1);
  406.          int var4 = Integer.parseInt(var2);
  407.          return var3 <= var4;
  408.       } else {
  409.          return var0.equalsIgnoreCase("ImplementedIn") ? var1.equalsIgnoreCase(var2) : false;
  410.       }
  411.    }
  412.  
  413.    static String[] getFilterComponents(String var0, String var1) {
  414.       int var2 = var0.indexOf(46);
  415.       if (var2 < 0) {
  416.          throw new InvalidParameterException("Invalid filter");
  417.       } else {
  418.          String var3 = var0.substring(0, var2);
  419.          Object var4 = null;
  420.          String var5 = null;
  421.          String var7;
  422.          if (var1.length() == 0) {
  423.             var7 = var0.substring(var2 + 1).trim();
  424.             if (var7.length() == 0) {
  425.                throw new InvalidParameterException("Invalid filter");
  426.             }
  427.          } else {
  428.             int var6 = var0.indexOf(32);
  429.             if (var6 == -1) {
  430.                throw new InvalidParameterException("Invalid filter");
  431.             }
  432.  
  433.             var5 = var0.substring(var6 + 1).trim();
  434.             if (var5.length() == 0) {
  435.                throw new InvalidParameterException("Invalid filter");
  436.             }
  437.  
  438.             if (var6 < var2 || var2 == var6 - 1) {
  439.                throw new InvalidParameterException("Invalid filter");
  440.             }
  441.  
  442.             var7 = var0.substring(var2 + 1, var6);
  443.          }
  444.  
  445.          String[] var8 = new String[]{var3, var7, var5};
  446.          return var8;
  447.       }
  448.    }
  449.  
  450.    public static Set<String> getAlgorithms(String var0) {
  451.       if (var0 != null && var0.length() != 0 && !var0.endsWith(".")) {
  452.          HashSet var1 = new HashSet();
  453.          Provider[] var2 = getProviders();
  454.  
  455.          for(int var3 = 0; var3 < var2.length; ++var3) {
  456.             Enumeration var4 = var2[var3].keys();
  457.  
  458.             while(var4.hasMoreElements()) {
  459.                String var5 = ((String)var4.nextElement()).toUpperCase();
  460.                if (var5.startsWith(var0.toUpperCase()) && var5.indexOf(" ") < 0) {
  461.                   var1.add(var5.substring(var0.length() + 1));
  462.                }
  463.             }
  464.          }
  465.  
  466.          return Collections.unmodifiableSet(var1);
  467.       } else {
  468.          return Collections.EMPTY_SET;
  469.       }
  470.    }
  471.  
  472.    // $FF: synthetic method
  473.    static void access$000() {
  474.       initialize();
  475.    }
  476.  
  477.    static {
  478.       AccessController.doPrivileged(new 1());
  479.       spiMap = new ConcurrentHashMap();
  480.    }
  481. }
  482.